
package net.sf.odinms.client;

import java.io.Serializable;
import net.sf.odinms.net.LongValueHolder;

public enum MapleBuffStat implements LongValueHolder, Serializable {
    MORPH(0x2),//变身 橡木伪装 092
    RECOVERY(0x4),//新手治疗 092
    MAPLE_WARRIOR(0x8),//冒险岛勇士 092
    STANCE(0x10),//稳如泰山 092
    SHARP_EYES(0x20),//火眼晶晶 092
    MANA_REFLECTION(0x40),//魔法反击 092
    SHADOW_CLAW(0x100),//暗器伤人
    INFINITY(0x200),//终极无限 092
    HOLY_SHIELD(0x400),//圣灵之盾 092
    HAMSTRING(0x800),//缓速箭
    BLIND(0x1000),//刺眼箭 致盲 092
    CONCENTRATE(0x2000), //集中精力
    ECHO_OF_HERO(0x8000),//英雄的回声
    GHOST_MORPH(0x20000), // 变身药的BUFF
    BERSERK_FURY(0x8000000),//勇士的意志
    
    WATK(0x100000000L),//物攻(葵花宝典、愤怒火) 092
    WDEF(0x200000000L),//防御(圣甲术、铠甲) 092 0x300000000L
    MATK(0x400000000L),//魔攻(精神力等) 092
    MDEF(0x800000000L),//魔法防御 092 0x800000000L
    ACC  (0x1000000000L),//命中率 092
    AVOID(0x2000000000L),//回避率 092
    HANDS(0x4000000000L),//手技
    SPEED(0x8000000000L),//速度 疾风步 092
    JUMP(0x10000000000L),//跳跃力(轻功等) 092
    MAGIC_GUARD(0x20000000000L),//魔法盾 092
    DARKSIGHT(0x40000000000L), // 隐身术 092
    BOOSTER(0x80000000000L),//快速矛 快速武器 快速箭 魔法狂暴等快速技能 092
    POWERGUARD(0x100000000000L),//伤害反弹 091
    HYPERBODYHP(0x200000000000L),//神圣之火HP 092
    HYPERBODYMP(0x400000000000L),//神圣之火MP 092
    INVINCIBLE(0x800000000000L),//神之保护 092
    SOULARROW(0x1000000000000L),//无形箭 092
    STUN(0x2000000000000L),//击晕效果 092
    POISON(0x4000000000000L),//毒效果 092
    SEAL(0x8000000000000L),//封印效果 092
    DARKNESS(0x10000000000000L),//暗黑 092
    COMBO(0x20000000000000L),//斗气集中 092
    SUMMON(0x20000000000000L), //召唤兽 风精灵 暗精灵 火魔兽 章鱼炮台 圣龙召唤
    WK_CHARGE(0x40000000000000L),//寒冰冲击 火焰冲击 雷鸣冲击 冰雪矛 092
    DRAGONBLOOD(0x80000000000000L), // 龙之魂 持续-HP 加攻击需要另外的BUFF 092
    HOLY_SYMBOL(0x100000000000000L),//神圣祈祷 092 加经验
    MESOUP(0x200000000000000L),//聚财术
    SHADOWPARTNER(0x400000000000000L),//影分身 092
    PICKPOCKET(0x800000000000000L),//敛财术 092
    PUPPET(0x800000000000000L), // 替身术
    MESOGUARD(0x1000000000000000L),//金钱护盾 092
    WEAKEN(0x4000000000000000L), //虚弱 092
    自然力重置(0x80000000L),//092
    骑士团主动终极(0x40000000L), //风灵使者的终极弓比较特别 是Buff
    闪光击(0x8000000L),

    //先Mask
    飓风(0x8, 3),//092
    潜入(0x400, 3),//092
    转化(0x100, 3),//092
    重生(0x200, 3),//092
    机械师(0x800, 3),//机械众多Buff都用这一个值
    灵气(0x1000, 3),//092
    黑暗灵气(0x2000, 3),//092
    蓝色灵气(0x4000, 3),//092
    黄色灵气(0x8000, 3),//092
    霸体(0x10000, 3),//092
    灵巧击退(0x4000000000L, 3),//092
    伤害吸收(0x800000000L, 3),//092
    抗压(0x2000000000L, 3),//092
    魔法屏障(0x200000000000L, 3),//092
    //荆棘(0x80000000000000L, 3),//093取消
    缓速术(0x100000000000L, 3),//龙神的缓速是BUFF 别的职业不是 092
    快速移动精通(0x200000, 3),//092
    连环吸血(0x800000000L, 3),//092
    暴走HP(0x20000L, 3), //提升最大hp 和神圣之火不一样
    暴走攻击(0x100000000000000L, 3), //092 - 0x200000000000000L 提升攻击力上限 同时使豹子出现翅膀
    地雷(0x200000000000000L, 3), //092 - 0x400000000000000L
    吞噬1(0x10L, 3), 
    吞噬2(0x20L, 3), 
    吞噬3(0x40L, 3), 
    吞噬4(0x80L, 3), 
    吞噬5(0x100000000000000L, 3),
    死亡猫头鹰(0x10000000000000L, 3),
    终极斩(0x40000000000000L, 3),
    矛连击强化(0x400000000L, 3), //参数是连击数 10 20 30 40 50 60 70 80 90 100
    战神之盾(0x1000000000L, 3),
    灵魂之石(0x800000000000L, 3),
    抗魔领域(0x400000000000L, 3),
    战斗命令(0x400000L, 3),
    祝福护甲(0x80000L, 3), //被动产生的BUFF
    EWatk(0x1000000000000000L, 3), //灵魂祝福攻击 变身 //原来是2
    EWdef(0x4000000000000000L, 3),//灵魂祝福物防 变身
    EMdef(0x8000000000000000L, 3),//灵魂祝福魔防 变身
    风影漫步(0x100000000L, 3),
    完美机甲(0x1L, 3),
    卫星防护(0x5L, 3),
    骑宠1(0x8000000L),//骑宠1 093
    骑宠2(0x10000000000000L),//骑宠2 093
    玛瑙的保佑(0x4000000L, 3),
    玛瑙的意志(0x8000000L, 3),
    祝福(0x20000000L, 3),
    
    //特别处理
    能量获得(0x8000000L, 3),//能量获得
    极速领域(0x10000000L, 1),//093
    疾驰_龙卷风(0x6000000L, 1),//疾驰 龙卷风 虽然要叠加2次 但是 |= 叠加2个相同的值的话数值是不变的 所以直接发总的叠加枚举
    幸运骰子(0x40000L, 3), //多buff 单独处理
    ;
    static final long serialVersionUID = 0L;
    private final long mask;
    private final long maskPos;



    private MapleBuffStat(long mask) {
        this.mask = mask;
        this.maskPos = 4L;
    }


    private MapleBuffStat(long mask, long maskPos) {
        this.mask = mask;
        this.maskPos = maskPos;
    }

    public long getMaskPos() {
        return this.maskPos;
    }

    @Override
    public long getValue() {
        return mask;
    }

}
